package com.shayu.aicodemother.core.saver;

import com.shayu.aicodemother.ai.model.HtmlCodeResult;
import com.shayu.aicodemother.ai.model.MultiFileCodeResult;
import com.shayu.aicodemother.exception.BusinessException;
import com.shayu.aicodemother.exception.ErrorCode;
import com.shayu.aicodemother.model.enums.CodeGenTypeEnum;

import java.io.File;

/**
 * 代码文件保存执行器
 * 根据代码生成类型执行相应的保存逻辑
 *
 * @author shayu
 */
public class CodeFileSaverExecutor {

    private static final HtmlCodeFileSaverTemplate htmlCodeFileSaver = new HtmlCodeFileSaverTemplate();

    private static final MultiFileCodeFileSaverTemplate multiFileCodeFileSaver = new MultiFileCodeFileSaverTemplate();


    /**
     * 执行代码保存
     *
     * @param codeResult  代码结果对象
     * @param codeGenTypeEnum 代码生成类型
     *
     * @return 保存的目录
     */
    public static File executeSaver(CodeGenTypeEnum codeGenTypeEnum,Object codeResult,Long appid){
        return  switch (codeGenTypeEnum){
            case HTML ->htmlCodeFileSaver.saveCode((HtmlCodeResult) codeResult,appid) ;
            case MULTI_FILE -> multiFileCodeFileSaver.saveCode((MultiFileCodeResult) codeResult,appid);
            default -> throw new BusinessException(ErrorCode.SYSTEM_ERROR,"不支持该类型的代码生成");
        };
    }


}
